注意: Flask 已经自带了 werkzeug 模块,且在这基础上进行了封装,这里只是为了演示 werkzeug 模块的使用方法
1. werkzeug的使用 + 理解
- werkzeug 的使用一
# xxx.py
from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple
@Request.application
def hello(request):
return Response('Hello World!')
if __name__ == '__main__':
run_simple('localhost', 4000, hello) # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器
- werkzeug 的使用二
# xxx.py
from werkzeug.wrappers import Response
from werkzeug.serving import run_simple
def hello(environ, start_response):
response = Response('Hello World!')
return response(environ, start_response)
if __name__ == '__main__':
run_simple('localhost', 4000, hello) # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器
- 代码的解释 -> 无法运行,只用于理解
# xxx.py
from werkzeug.serving import run_simple
def hello(environ, start_response):
return b'Hello World!'
if __name__ == '__main__':
run_simple('localhost', 4000, hello) # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器
2. 通过 werkzeug 生成 Flask
- flask 的形成 第一步
# xxx.py
from werkzeug.wrappers import Response
from werkzeug.serving import run_simple
def hello(environ, start_response):
response = Response('Hello World!')
return response(environ, start_response)
if __name__ == '__main__':
run_simple('localhost', 4000, hello) # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行 hello 函数返回对应的数据给浏览器
- flask 的形成 第二步
# xxx.py
from werkzeug.wrappers import Response
from werkzeug.serving import run_simple
class Foo(object):
def __call__(self, environ, start_response):
response = Response('Hello World!')
return response(environ, start_response)
obj = Foo()
if __name__ == '__main__':
run_simple('localhost', 4000, obj) # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行__call__方法(因为 对象+括号 执行,相当于执行了它所在的类中的 __call__ 方法)返回对应的数据给浏览器
- flask 的形成 第三步
# xxx.py
from werkzeug.wrappers import Response
from werkzeug.serving import run_simple
class Foo(object):
def __call__(self, environ, start_response):
response = Response('Hello World!')
return response(environ, start_response)
def run(self):
run_simple('localhost', 4000, self) # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行__call__方法(因为 对象+括号 执行,相当于执行了它所在的类中的 __call__ 方法)返回对应的数据给浏览器
obj = Foo()
if __name__ == '__main__':
obj.run()
- flask 的形成 第四步
# xxx.py
from werkzeug.wrappers import Response
from werkzeug.serving import run_simple
class Flask(object):
def __call__(self, environ, start_response):
response = Response('Hello World!')
return response(environ, start_response)
def run(self):
run_simple('localhost', 4000, self) # 启动 Flask 监听本地 ip + 4000 端口,如果有人访问则执行__call__方法(因为 对象+括号 执行,相当于执行了它所在的类中的 __call__ 方法)返回对应的数据给浏览器
app = Flask()
if __name__ == '__main__':
app.run()